package com.ruoyi.common.utils.tool;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class TextUtils {

    public static String getRandom(int length) {
        // 定义一个字符串（A-Z，a-z，0-9）即62位；
        String str = "zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
        // 由Random生成随机数
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        // 长度为几就循环几次
        for (int i = 0; i < length; ++i) {
            // 产生0-61的数字
            int number = random.nextInt(62);
            // 将产生的数字通过length次承载到sb中
            sb.append(str.charAt(number));
        }
        // 将承载的字符转换成字符串
        return sb.toString();
    }

    public static String getRandomness(int length) {
        // 产生随机数
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        // 循环length次
        for (int i = 0; i < length; i++) {
            // 产生0-2个随机数，既与a-z，A-Z，0-9三种可能
            int number = random.nextInt(3);
            long result = 0;
            switch (number) {
                // 如果number产生的是数字0；
                case 0:
                    // 产生A-Z的ASCII码
                    result = Math.round(Math.random() * 25 + 65);
                    // 将ASCII码转换成字符
                    sb.append(String.valueOf((char) result));
                    break;
                case 1:
                    // 产生a-z的ASCII码
                    result = Math.round(Math.random() * 25 + 97);
                    sb.append(String.valueOf((char) result));
                    break;
                case 2:
                    // 产生0-9的数字
                    sb.append(String.valueOf(new Random().nextInt(10)));
                    break;
            }
        }
        return sb.toString();
    }

    /**
     * 逗号隔开字符串追加新字符串
     * （注：保证每个字符串唯一）
     *
     * @param input
     * @param newString
     * @return
     */
    public static String addUniqueString(String input, String newString) {
        // 如果输入为空，直接返回新字符串
        if (input == null || input.isEmpty()) {
            return newString;
        }

        // 将输入字符串按逗号分割成数组，并去除每个字符串两端的空格
        String[] parts = input.split(",");
        Set<String> uniqueSet = new HashSet<>();
        for (String part : parts) {
            uniqueSet.add(part.trim());
        }

        // 将新字符串添加到Set中（如果它不存在且不为空）
        if (newString != null && !newString.isEmpty()) {
            uniqueSet.add(newString.trim());
        }

        // 构建新的逗号分隔的字符串
        return String.join(",", uniqueSet);
    }
}